package com.jqweb.controller.Upload;

import com.jqweb.pojo.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.nio.file.Paths;
import java.util.UUID;

@RestController
@RequestMapping("/upload")
public class UploadFileController {

    /* 物品图片上传功能实现 */
    @RequestMapping(value = "/imgFile", method = RequestMethod.POST)
    public Result uploadFile(Integer shopId, Integer userId, @RequestParam("file") MultipartFile file) throws Exception {
        // 获取文件名
        String fileName = file.getOriginalFilename();
        // 获取文件的扩展名
        if (fileName == null) {
            return Result.error("上传失败");
        }
        // 获取文件的扩展名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        // 生成新的文件名
        String newFileName = UUID.randomUUID() + suffixName;

        // 获取项目根目录
        String projectRoot = System.getProperty("user.dir");

        // 创建public/shopImg目录（如果不存在）
        String uploadDir = Paths.get(projectRoot, "public", "img").toString();
        // 创建目录
        File directory = new File(uploadDir);
        // 如果目录不存在，则创建
        if (!directory.exists()) {
            directory.mkdirs();
        }

        // 保存文件路径
        String filePath = Paths.get(uploadDir, newFileName).toString();

        // 文件访问URL
        String FileUrl = "http://127.0.0.1:9000/api/static/img/" + newFileName;

        // 保存文件
        file.transferTo(new File(filePath));
        // 打印文件保存路径
        System.out.println("文件已保存到: " + filePath);

        return Result.success("上传成功", FileUrl);
    }
}